    
/**
 * Project Name:UIMS
 * File Name:PortalSysService.java
 * Package Name:com.bgi.uims.module.sys.portal.service
 * CreateDate:2015年3月24日 下午9:43:30
 * Copyright (c) 2015, BGI_DX All Rights Reserved.
 */     

package com.bgi.uims.module.sys.portal.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.bgi.uims.common.dao.ICommonDao;
import com.bgi.uims.common.dto.PageVo;
import com.bgi.uims.module.sys.portal.dto.Portal;
import com.bgi.uims.module.sys.portal.dto.UserDesktop;
import com.bgi.uims.module.sys.user.dto.User;
import com.bgi.uims.pub.utils.Constant;

/**
 * ClassName:PortalSysService 
 * Function: TODO 
 * Reason:	 TODO 
 * @CreateDate:2015年3月24日 下午9:43:30
 * @author   tantianhua
 * @version  
 * @since    JDK 1.7
 * @see 	 
 */
@Service
@Transactional
public class PortalSysService {



	@Resource
	private ICommonDao commonDao;
	
	/**
	 * 
	 * @Description：  查询面板信息
	 * @author: tantianhua
	 * @CreateDate:2015年3月24日 下午9:43:30
	 * @version: V1.0
	 */
	public PageVo queryPortal(Portal portal) {
		// TODO Auto-generated method stub
		portal.setQuerySql(Constant.SQL_QUERY_PORTAL);
		//未设置页码，默认不分页
		PageVo page=commonDao.query(portal);
		return page;
	}
	
	/**
	 * 
	 * @Description：  保存面板信息
	 * @author: tantianhua
	 * @CreateDate:2015年3月24日 下午9:43:30
	 * @version: V1.0
	 */
	public PageVo savePortal(Portal portal) {
		// TODO Auto-generated method stub
		PageVo pageVo=new PageVo();
		if(portal.getPortalId()!=null&&!"".equals(portal.getPortalId()))
		{
			portal.setUpdateSql(Constant.SQL_UPDATE_PORTAL);
			if(commonDao.update(portal)>0)
			{
				pageVo.setSuccess(true);
			}
			else
			{
				pageVo.setSuccess(false);
				pageVo.setMsg("未更新到数据!");
			}
		}
		else
		{
			//先验证是否已存在
			portal.setQueryOneSql(Constant.SQL_QUERY_VERIFY_PORTALNAME);
			Integer i=(Integer) commonDao.queryOne(portal);
			if(i>0)
			{
				pageVo.setSuccess(false);
				pageVo.setMsg("面板名称已存在!"); 
			}else{
				portal.setQueryOneSql(Constant.SQL_QUERY_VERIFY_PORTALCODE);
				Integer j=(Integer) commonDao.queryOne(portal);
				if(j>0){
					pageVo.setSuccess(false);
					pageVo.setMsg("面板编码已存在!");
				}else
				{
					portal.setInsertSql(Constant.SQL_INSERT_PORTAL);
					commonDao.insert(portal);
					pageVo.setSuccess(true);
				}
			}
			
		}
		return pageVo;
	}
	
	/**
	 * 
	 * @Description：  删除面板信息
	 * @author: tantianhua
	 * @CreateDate:2015年3月24日 下午9:43:30
	 * @version: V1.0
	 */
	public boolean deletePortal(Portal portal) {
		portal.setUpdateSql(Constant.SQL_DELETE_PORTAL);
		commonDao.update(portal);
		return true;
	}
	
	/**
	 * 
	 * @Description：  查询单个面板信息
	 * @author: tantianhua
	 * @CreateDate:2015年3月24日 下午9:43:30
	 * @version: V1.0
	 */
	public Portal findPortalById(Portal portal) {
		// TODO Auto-generated method stub
		portal.setQueryOneSql(Constant.SQL_QUERY_PORTALBYID);
		portal=(Portal) commonDao.queryOne(portal);
		return portal;
	}
	
	/**
	 * 
	 * @Description：  更新面板状态
	 * @author: tantianhua
	 * @CreateDate:2015年3月24日 下午9:43:30
	 * @version: V1.0
	 */
	public String updatePortalStatus(Portal portal) {
		String result=null;
		portal.setUpdateSql(Constant.SQL_UPDATE_PORTALSTATUS);
		Integer count=commonDao.update(portal);
		if(count==0)
			result=Constant.ERROR_CODE_102;
		return result;
	}
	
	public UserDesktop queryDesktopByUser(User user) {
		user.setQueryOneSql(Constant.SQL_QUERY_DESKTOPBYUSER);
		UserDesktop userDesktop=(UserDesktop) commonDao.queryOne(user);
		return userDesktop;
	}
	
	/**
	 * 
	 * @Description：  角色不允许的面板
	 * @author: wuyaohong
	 * @CreateDate:2015年3月30日 下午3:37:21
	 * @version: V1.0
	 */
	public PageVo queryPortalNotInRole(UserDesktop userDesktop) {
		userDesktop.setQuerySql(Constant.SQL_QUERY_NOTINROLE);
		//未设置页码，默认不分页
		PageVo page=commonDao.query(userDesktop);
		return page;
	}
	
	/**
	 * 
	 * @Description：  查询已经授权的面板
	 * @author: wuyaohong
	 * @CreateDate:2015年3月30日 下午3:36:19
	 * @version: V1.0
	 */
	public PageVo queryPortalByRole(UserDesktop userDesktop) {
		userDesktop.setQuerySql(Constant.SQL_QUERY_BYROLE);
		//未设置页码，默认不分页
		PageVo page=commonDao.query(userDesktop);
		return page;
	}
	
	/**
	 * 
	 * @Description：  保存首页面板位置
	 * @author: wuyaohong
	 * @CreateDate:2015年3月30日 下午3:36:04
	 * @version: V1.0
	 */
	public boolean addUserDesktop(UserDesktop userDesktop) {
		boolean bool=false;
		userDesktop.setInsertSql(Constant.SQL_INSERT_USERDESKTOP);
		String portalId = (String) commonDao.insert(userDesktop);
		if(portalId!=null)
		{
			bool=true; 
		}
		return bool;
	}

	/**
	 * 
	 * @Description：  更新首页面板位置
	 * @author: wuyaohong
	 * @CreateDate:2015年3月30日 下午3:35:41
	 * @version: V1.0
	 */
	public boolean updateUserDesktop(UserDesktop userDesktop) {
		userDesktop.setUpdateSql(Constant.SQL_UPDATE_USERDESKTOP);
		commonDao.update(userDesktop);
		return true;
	}

	/**  
	 * @Description：  
	 * @author: tantianhua
	 * @CreateDate:2015年3月31日 下午1:54:06
	 * @version: V1.0 
	 */   
	
	@SuppressWarnings("unchecked")
	public void deletePortalRelation(Portal portal) {
		String delName = portal.getPortalCode();
		portal.setQuerySql(Constant.SQL_QUERY_DESKTOPBYUSERS);
		PageVo pageVo=commonDao.query(portal);
		List <UserDesktop>results = pageVo.getRows();
		for(UserDesktop userDesktops : results){
			String userDesktopName = userDesktops.getOrderData();
			String newuserDesktopName = userDesktopName.replaceAll(delName, "");
			UserDesktop ud = new UserDesktop();
			ud.setUserPanelId(userDesktops.getUserPanelId());
			ud.setUserId(userDesktops.getUserId());
			ud.setOrderData(newuserDesktopName);
			
			ud.setUpdateSql(Constant.SQL_UPDATE_USERDESKTOP);
			commonDao.update(ud);
		}	
		
		
		portal.setUpdateSql(Constant.SQL_DELETE_PORTALRELATION);
		commonDao.update(portal);
	}

}
